/*******************************************************************************
 * Copyright 2014 See AUTHORS file.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/

package com.hstcs.systmes;

import com.badlogic.ashley.core.ComponentMapper;
import com.badlogic.ashley.core.Entity;
import com.badlogic.ashley.core.Family;
import com.badlogic.ashley.systems.IteratingSystem;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
import com.badlogic.gdx.math.Vector2;
import com.hstcs.assets.Config;
import com.hstcs.components.BoundsComponent;
import com.hstcs.components.TransformComponent;
import com.hstcs.game.God;


public class BoundsSystem extends IteratingSystem {
	
	private ComponentMapper<TransformComponent> tm;
	private ComponentMapper<BoundsComponent> bm;
	
	public ShapeRenderer shapes ;
	public static boolean isRender = false;
	
	public BoundsSystem() {
		super(Family.all(BoundsComponent.class, TransformComponent.class).get());
		
		tm = ComponentMapper.getFor(TransformComponent.class);
		bm = ComponentMapper.getFor(BoundsComponent.class);
		
		shapes = new ShapeRenderer();
		shapes.setColor(Color.CYAN);
		shapes.getProjectionMatrix().
		set(God.instance.engine.getSystem(RenderingSystem.class).batch().getProjectionMatrix());

	}

	@Override
	public void update(float deltaTime) {
		// TODO Auto-generated method stub
		super.update(deltaTime);
		

	}
	int i= 5;
	@Override
	public void processEntity(Entity entity, float deltaTime) {
		TransformComponent pos = tm.get(entity);
		BoundsComponent bound = bm.get(entity);
		
		bound.bounds.x = pos.pos.x - bound.bounds.width * 0.5f;
		bound.bounds.y = pos.pos.y - bound.bounds.height * 0.5f;
//		bound.circle.x = pos.pos.x;
//		bound.circle.y = pos.pos.y;

		if(isRender ==true){
			render(bound);
		}


	}

	public void render(BoundsComponent bound){
		
		shapes.begin(ShapeType.Line);
		shapes.rect(bound.bounds.x , bound.bounds.y , bound.bounds.getWidth(),
				bound.bounds.getHeight());
//		shapes.circle(posBound.x, posBound.y, bound.circle.radius);
		shapes.end();
	}
	
}
